#ifndef _CONTEXT_SWITCHER_H_
#define _CONTEXT_SWITCHER_H_

#include "../../container/vector/Vector.h"

/*
	class : ContextSwitcher<Switchee>
	desc : Used for performing context switches.
		Pretty much tells me how to switch if
		a process has been decided on to switch 
		This creates an interface to use. 
		
	
*/
template<typename Switchee>
class ContextSwitcher
{
	protected:
		//gives the currently running
		//shared by all context switchers of this type.
		static Switchee* currentRunning; 

	public :
		//performs a context switch between switcher and currentRunning
		virtual void contextSwitch(Switchee* switcher)=0;
};

template<typename Data>
Data* ContextSwitcher<Data>::currentRunning = NULL;


#endif
